home *** CD-ROM | disk | FTP | other *** search
/ Aminet 23 / Aminet 23 (1998)(GTI - Schatztruhe)[!][Feb 1998].iso / Aminet / disk / misc / TransADF.lha / Source / td.c < prev    next >
C/C++ Source or Header  |  1997-11-29  |  2KB  |  66 lines

  1. /*--------------------*/
  2. /* TrackDisk Routines */
  3. /*--------------------*/
  4.  
  5. #include <exec/types.h>
  6. #include <exec/io.h>
  7. #include <devices/trackdisk.h>
  8. #include <clib/exec_protos.h>
  9.  
  10. #include "td.h"
  11.  
  12.  
  13. /* Private functions */
  14. BYTE rwTrack (APTR  Buffer, UBYTE NumTracks, UBYTE TrackNum, 
  15.               struct IOExtTD *DiskReq);
  16.  
  17.  
  18. /* 
  19. ** Read a number of complete tracks from a specified unit.
  20. ** Return DoIO()'s return value.
  21. */
  22. BYTE readTrack (APTR   rBuffer,
  23.                 UBYTE  rNumTracks,
  24.                 UBYTE  rTrackNum,
  25.                 struct IOExtTD *rDiskReq)
  26. {
  27.   /* Read from track */
  28.   rDiskReq->iotd_Req.io_Command = CMD_READ;
  29.   
  30.   return rwTrack (rBuffer, rNumTracks, rTrackNum, rDiskReq);
  31. }
  32.  
  33.  
  34. /*
  35. ** Write a number of complete tracks to a specified unit with TD_FORMAT.
  36. ** Return DoIO()'s return value.
  37. */
  38. BYTE writeTrack (APTR   wBuffer,
  39.                  UBYTE  wNumTracks,
  40.                  UBYTE  wTrackNum,
  41.                  struct IOExtTD *wDiskReq)
  42. {
  43.   /* Write to track */
  44.   wDiskReq->iotd_Req.io_Command = TD_FORMAT;
  45.   
  46.   return rwTrack (wBuffer, wNumTracks, wTrackNum, wDiskReq);
  47. }
  48.  
  49.  
  50. /*
  51. ** Perform track-sized IO on specified unit.
  52. ** Return DoIO()'s return value.
  53. */
  54. BYTE rwTrack (APTR  Buffer,
  55.               UBYTE NumTracks,
  56.               UBYTE TrackNum,
  57.               struct IOExtTD *DiskReq)
  58. {
  59.   DiskReq->iotd_Req.io_Flags   = 0;
  60.   DiskReq->iotd_Req.io_Data    = Buffer;
  61.   DiskReq->iotd_Req.io_Length  = NumTracks * TRACK_SIZE;
  62.   DiskReq->iotd_Req.io_Offset  = TrackNum  * TRACK_SIZE;
  63.   
  64.   return DoIO((struct IORequest *)DiskReq);
  65. }
  66.